/*
 * Universidad del Valle de Guatemala
 * Algoritmos y Base de Datos
 * Juan Fernando Moraflores Cifuentes, 12938
 * Carlos Sagastume, 12113
 * 
 */
package lector;

//import java.util.logging.Logger;



public class Pila implements iPila{
    //Atributos
    
    Object prueba;
    boolean prueba1 = true; 
    int j;
    Object[] vector; //vectro para almacenar tanto operandos como numeros
    int[] input; //vector para el input de operaciones
    String[] input1;
    int[] output;// vector para el output de operaciones
    
   int i;//este es el contador para el vector input
   int o;//este es el contador para el vector output
   int x;//este es el contador x para cualquier cosa
     
    //metodos
    //Constructor
    public Pila() {
        this.prueba = prueba;
        this.vector = new Object[40];//arrays para los numero 
        this.input = new int[40];
        this.output = new int[40];
        this.j = 0;
        this.i = 0;
        this.o = 0;
        this.x = 0;
        this.input1 = new String[40];
        
    }
    
    
    
  
    //sets
    
  public void setPrueba ( Object prueba){
        this.prueba = prueba;
  
  
  
  }

    public void setInput1(String[] input1) {
        this.input1 = input1;
    }

  
  
    public void setPrueba1(boolean prueba1) {
        this.prueba1 = prueba1;
    }

    public void setVector(Object[] vector) {
        this.vector = vector;
    }

    public void setJ(int j) {
        this.j = j;
    }

    public void setInput(int[] input) {
        this.input = input;
    }

    public void setOutput(int[] output) {
        this.output = output;
    }

    public void setI(int i) {
        this.i = i;
    }

    public void setO(int o) {
        this.o = o;
    }

    public void setX(int x) {
        this.x = x;
    }

    public void setE(int e) {
        this.e = e;
    }
    
    
    //gets
    
    
  public Object getPrueba ( ){
        return prueba;
  
  
  
  }

    public boolean isPrueba1() {
        return prueba1;
    }

    public Object[] getVector() {
        return vector;
    }

    public int getJ() {
        return j;
    }

    public int[] getInput() {
        return input;
    }

    public int[] getOutput() {
        return output;
    }

    public int getI() {
        return i;
    }

    public int getO() {
        return o;
    }

    public int getX() {
        return x;
    }

    public String[] getInput1() {
        return input1;
    }
  
    
    
    
    
 int e=0;
  public void Push ( char prueba){ // el push solo mete valores dentro de un array
  e=e+1;
  //for(int e=0; e<j;e++ ){
      //System.out.println("dsjfdsj");
      vector[e]=prueba;
     // System.out.println("bjklrjaskfhsu");
     // System.out.println(""+ vector[e]);
      
      
      
      
  //}
  
  }    
    
  /* public void Pop(char signo){// inicialmente ibamos a usar este metodo pero al ir programando terminamos utilizando el metodo Revisar en lugar de metodo POP
      
       
       String signo1=""+signo;
     
       
       
    if (signo1.equals("*") ){
        
       
       // System.out.println(""+signo1);
    }else if(signo1.equals("+")){
        //System.out.println(""+signo1);
    
    }else if(signo1.equals("-")){
    
    //System.out.println(""+signo1);
    
    }else if(signo1.equals("/")){
    
   // System.out.println(""+signo1);
    }       
       
   }
   */
   public void Pop(){ //este metodo es practicamente lo que deberia de ser POP
     
       
       do{
       i=i+1;
           System.out.println(""+input[i]);
          // System.out.println("Se iniciò correctamente el ciclo del listado\n" +input1[i]);
          // System.out.println("kdfjks");
       switch(input1[i]){
           
          case "+":
              
     //  if(input1[i].equals("+")){
           //System.out.println("SDJFKS");
           for(int ww= 1; ww<i; ++ww){
               
           output[0]=(char)input[0];
           output[0]=(char)output[0]+(char)input[ww];
                           input[0]=output[0];
                  //       System.out.println(""+ (Integer)input[ww]);
           }  System.out.println("suma\t" +(Integer)output[0]);
          //i=0;
           // input[0]=0;
          break;
           case "*":
          //)  }else if (input1[i].equals("*")){
             for(int ww= 1; ww<i; ++ww){
               
           output[0]=(char)input[0];
           output[0]=(char)output[0]*(char)input[ww];
                   input[0]=output[0];
                     //     System.out.println(""+input[ww]);
           } System.out.println("multiplicacion\t" +(Integer)output[0]);
           // input[0]=0;
           // i=0;
            break;
          case "/":
          // }else if (input1[i].equals("/")){
            
             for(int ww= 1; ww<i; ++ww){
               
           output[0]=(char)input[0];
           output[0]=(char)(output[0])/((char)input[ww]);
                   input[0]=output[0];
              //   System.out.println(""+(Integer)input[ww]);
           } System.out.println("division\t" +(char)output[0]);
            //   input[0]=0;
          //  i=0;
               break;
          case "-":
            //}else if (input1[i].equals("-")){
             for(int ww= 1; ww<i; ++ww){
               
           output[0]=(char)input[0];
           output[0]=(char)input[ww] -(char)output[0];
           input[0]=output[0];
                    //      System.out.println(""+(Integer)input[ww]);
           } System.out.println("resta\t" +(Integer)output[0]);
              // input[0]=0;
              // x=3;
                 //         i=0;

               break;
              
          default:
              System.out.println("Se encontro un numero\t" +(Integer)input[i]);
             // x=0;
              break;
           // }else
               
       }      // System.out.println("dfkajdskflsdkfeeee");
       }while(x!=0);
       }
   

       

    // este metodo agarra los operandos del stack y los opera
    public boolean HasItems(){
    if(vector[e]!=null){
    prueba1=true;
    
    }
    return prueba1;
    
    }
    
}
